home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d15 / infop141.arc / PAGE_10.PAS < prev    next >
Pascal/Delphi Source File  |  1990-12-07  |  6KB  |  255 lines

  1. procedure page_10;
  2.  
  3. var
  4.   i : 1..63;
  5.   xbool1 : boolean;
  6.   xbool2 : boolean;
  7.   xbool3 : boolean;
  8.   xchar : char;
  9.   xword1: word;
  10.  
  11. procedure muxint(a : string; b : byte);
  12.   begin
  13.   caption3(a);
  14.   with regs do
  15.     begin
  16.     AH:=b;
  17.     AL:=0;
  18.     intr($2F, regs);
  19.     case AL of
  20.       $00 : writeln('no; OK to load');
  21.       $01 : writeln('no; not OK to load');
  22.       $FF : writeln('yes')
  23.       else
  24.         unknown('status', AL, 2)
  25.     end
  26.     end
  27.   end;
  28.  
  29.   begin (* procedure page_10 *)
  30.   caption2('Multiplex interrupt ($2F)');
  31.   Window(1, 4, twidth div 2, tlength - 2);
  32.   muxint('DOS            ', $12);
  33. { muxint('DRIVER.SYS     ', $08);}
  34.   muxint('DISPLAY.SYS    ', $B0);
  35.   muxint('ANSI.SYS       ', $1A);
  36.   muxint('PRINT          ', $01);
  37.   muxint('ASSIGN         ', $06);
  38. (*
  39. **  Byte 12:12 p. 176C, Duncan, and many others, all of whom mistakenly give
  40. **  AH = $02
  41. *)
  42.   muxint('SHARE          ', $10);
  43. (*  muxint('FASTOPEN       ', $xx);*)
  44.   muxint('NLSFUNC        ', $14);
  45.   muxint('GRAFTABL       ', $B0);
  46. (*  muxint('KEYB           ', $B8);*)
  47.   muxint('NETBIOS append ', $87);
  48.   muxint('NETBIOS network', $88);
  49. (*  Byte 12:12 p. 180.  PC Tech Journal 3:11 p.104 gives AH = $BB  *)
  50.   muxint('SHELLB         ', $19);
  51.   muxint('XMA2EMS        ', $1B);
  52.   muxint('APPEND         ', $B7);
  53.   caption3('CDROM          ');
  54.   with regs do
  55.     begin
  56.     AX:=$1500;
  57.     BX:=0;
  58.     Intr($2F, regs);
  59.     case AL of
  60.       $00 : writeln('no; OK to load');
  61.       $01 : writeln('no; not OK to load');
  62.       $FF : begin
  63.             Write('yes');
  64.             caption3('on drives');
  65.             Write(Chr(CX + 65));
  66.             caption3('through');
  67.             Write(Chr(CX + BX + 65 - 1))
  68.             end;
  69.     end; {case}
  70.     end;
  71.   caption3('Network        ');
  72.   with regs do
  73.     begin
  74.     AX:=$B800;
  75.     Intr($2F, regs);
  76.     if AL = 0 then
  77.       Writeln('no; OK to load')
  78.     else
  79.       begin
  80.       Write('yes');
  81.       caption3('this is a');
  82.       if BX and $0040 = $40 then
  83.         Writeln('server')
  84.       else
  85.         if BX and $0004 = $4 then
  86.           Writeln('messenger')
  87.         else
  88.           if BX and $0080 = $80 then
  89.             Writeln('receiver')
  90.           else
  91.             if BX and $0008 = $8 then
  92.               Writeln('redirector');
  93.       end;
  94.     end;
  95.   pause3(3);
  96.   if endit then
  97.     Exit;
  98.   caption3('JP Software''s 4DOS');
  99.   with regs do
  100.     begin
  101.     AX:=$D44D;
  102.     BX:=0;
  103.     Intr($2F, regs);
  104.     if AX <> $44DD then
  105.       Writeln('no')
  106.     else
  107.       begin
  108.       Writeln('yes');
  109.       caption3('  version');
  110.       xword1:=BH;
  111.       Write(BL, decimal);
  112.       zeropad(xword1);
  113.       caption3('shell no.');
  114.       Writeln(DL);
  115.       caption3('  4DOS PSP segment');
  116.       Writeln(hex(CX, 4))
  117.       end;
  118.     end;
  119.   pause3(2);
  120.   if endit then
  121.     Exit;
  122.   caption3('Microsoft Windows');
  123.   with regs do
  124.     begin
  125.     AX:=$1600;
  126.     Intr($2F, regs);
  127.     case AL of
  128.     $01,$FF: begin
  129.              Writeln('yes');
  130.              caption3('  version');
  131.              Writeln('Windows/386 2.x')
  132.              end;
  133.     $00,$80: begin
  134.              AX:=$4680;
  135.              Intr($2F, regs);
  136.              if AX = 0 then
  137.                begin
  138.                Writeln('yes');
  139.                caption3('  mode');
  140.                Writeln('Real or Standard')
  141.                end
  142.              else
  143.                Writeln('no');
  144.              end;
  145.     $02..$7F,$81..$FE: begin
  146.                        Writeln('yes');
  147.                        caption3('  version');
  148.                        Writeln(AL, decimal, AH, ' enhanced mode');
  149.                        end;
  150.     end; {case}
  151.     end;
  152.   caption3('Quarterdeck''s Desqview');
  153.   with regs do
  154.     begin
  155.     AX:=$2B01;
  156.     CX:=$4445; {DE}
  157.     DX:=$5351; {SQ}
  158.     MsDos(regs);
  159.     if AL = $FF then
  160.       Writeln('no')
  161.     else
  162.       begin
  163.       Writeln('yes');
  164.       caption3('  version');
  165.       if BX = $0002 then
  166.         Writeln('2', decimal, '00')
  167.       else
  168.         begin
  169.         Write(BH, decimal);
  170.         zeropad(BL);
  171.         end;
  172.       end;
  173.     end;
  174.   window(1 + twidth div 2, 3, twidth, tlength - 2);
  175.   if osmajor >=4 then
  176.     with regs do
  177.       begin
  178.       AX:=$B700;
  179.       Intr($2F, regs);
  180.       if AL=$FF then
  181.         begin
  182.         caption2('APPEND ');
  183.         AX:=$B706;
  184.         Intr($2F, regs);
  185.         if (BX and 1) = 1 then
  186.           Write('enabled ');
  187.         if (BX and $2000) = $2000 then
  188.           Write('/PATH ');
  189.         if (BX and $4000) = $4000 then
  190.           Write('/E ');
  191.         if (BX and $8000) = $8000 then
  192.           Write('/X');
  193.         Writeln;
  194.         caption2('APPEND path');
  195.         AX:=$B704;
  196.         Intr($2F, regs);
  197.         while Mem[ES:DI] <> 0 do
  198.           begin
  199.           Write(Chr(mem[ES:DI]));
  200.           Inc(DI)
  201.           end;
  202.         Writeln
  203.         end
  204.       end;
  205.   with regs do begin
  206.     AX:=$0100;
  207.     intr($2F, regs);
  208.     if AL = $FF then begin
  209.       caption2('PRINT queue');
  210.       AX:=$0104;
  211.       intr($2F, regs);
  212.       xbool1:=true;
  213.       xbool2:=false;
  214.       repeat
  215.         xchar:=char(mem[DS : SI]);
  216.         if xchar > #0 then
  217.           begin
  218.           if xbool1 then
  219.             begin
  220.             xbool1:=false;
  221.             writeln;
  222.             window(2 + twidth div 2, wherey + hi(windmin), twidth, tlength - 2)
  223.             end;
  224.           pause2;
  225.           if endit then
  226.             Exit;
  227.           write(xchar);
  228.           i:=1;
  229.           xbool3:=false;
  230.           repeat
  231.             xchar:=char(mem[DS : SI + i]);
  232.             if xchar > #0 then
  233.               begin
  234.               write(xchar);
  235.               inc(i)
  236.               end
  237.             else
  238.               begin
  239.               writeln;
  240.               xbool3:=true
  241.               end
  242.           until xbool3;
  243.           inc(SI, 64)
  244.           end
  245.         else
  246.           xbool2:=true
  247.       until xbool2;
  248.       if xbool1 then
  249.         writeln('(empty)');
  250.       AX:=$0105;
  251.       intr($2F, regs)
  252.     end
  253.   end
  254. end;
  255.